package com.company.exp2.util.Recorder;

/**
 * Recordable 用于处理当Container中数据进入或出去时的操作
 * 并且最终将内容记录输出至文本
 *
 * 接口：
 *      onPut
 *      onPop
 *      log
 */
public interface Recordable {

    // 当数据进入Container时的操作
    default void onPut() {}

    // 传入参数的onPut
    default void onPut(long timestamp) {

    }

    // 当数据弹出Container时的操作
    default void onPop() {}

    // 传入参数的onPop
    default void onPop(long timestamp) {

    }

    // 输出record至文本，json形式
    void log();

    default Recordable setNo(int No) {
        return this;
    }

}
